package com.dishi.hj212.core;


import com.dishi.hj212.exception.T212FormatException;

import java.util.Arrays;
import java.util.Map;
import java.util.Objects;

/**
 * Created by xiaoyao9184 on 2017/12/15.
 */
public class VerifyUtil {

    public static void verifyChar(char[] tar, char[] src, Enum<?> e) throws T212FormatException {
        Objects.requireNonNull(tar);
        Objects.requireNonNull(src);
        if (!Arrays.equals(src, tar)) {
            T212FormatException.static_data_match(e, tar, src);
        }
    }

    public static void verifyChar(byte[] tar, char[] src, Enum<?> e) throws T212FormatException {
        char[] c = new String(tar).toCharArray();
        verifyChar(src, c, e);
    }

    public static void verifyLen(int count, int length, Enum<?> e) throws T212FormatException {
        if (count != length) {
            T212FormatException.length_not_match(e, count, length);
        }
    }

    public static void verifyLen(String str, int min, int max, Enum<?> e) throws T212FormatException {
        if (str == null) {
            return;
        }
        int len = str.length();

        if (len >= min && len <= max) {
        } else {
            T212FormatException.length_not_range(e, len, min, max);
        }
    }

    public static void verifyLen(String str, int length, Enum<?> e) throws T212FormatException {
        if (str == null) {
            return;
        }

        verifyLen(str.length(), length, e);
    }

    public static void verifyRange(int src, int min, int max, Enum<?> e) throws T212FormatException {
        if (src >= min && src <= max) {
        } else {
            T212FormatException.length_not_range(e, src, min, max);
        }
    }

    public static String verifyRange(String str, int min, int max, Enum<?> e) throws T212FormatException {
        int src = 0;
        if (str != null) {
            src = str.length();
        }

        if (src >= min && src <= max) {
        } else {
            T212FormatException.length_not_range(e, src, min, max);
        }
        return str;
    }

    public static void verifyCrc(char[] msg, char[] crc, Enum<?> e) throws T212FormatException {
        int crc16 = T212Parser.crc16Checkout(msg, msg.length);
        int crcSrc = Integer.parseInt(new String(crc), 16);

        if (crc16 != crcSrc) {
            T212FormatException.crc_verification_failed(e, msg, crc);
        }


    }

    public static void verifyHave(Map<String, ?> object, Enum<?> e) throws T212FormatException {
        if (!object.containsKey(e.name())) {
            T212FormatException.field_is_missing(e, e.name());
        }
    }

}
//根据“给定资料1”，分析长茂村由发展落后的乡村蝶变为远近闻名的“明
//        星村”的原因。（15分）

//1. 建立村级土地合作社，有效集约土地，农民承包经营权入股，现股权到人、股份合作、集体运营
//2. 对土地增值部分进行二次分配，发展公益事业
//3. 发展特色产业
//4. 设立专项扶持资金和成立产业合作社，探索“党支部+公司+基地+专业合作社+农户”形式，组建产业化联合体，“三位一体”综合合作模式
//5. 提供就业岗位，获得就业收入
//6. 成立资金互助社，设立村级互助基金，“基金担保+村集体审核+银行授信”合作方式，多渠道融资服务，提供资金支持
//7. 互助社社员获得基金利息


//1.集中管理土地：建立村级土地合作社，村名承包经营权，股权到热门、股份合作、集体运营
//2.扩宽收入渠道：对土地增值部分进行二次分配，互助社社员获取基金利息，增加就业收入
//3.发展特色产业：设计产业合作社，探索“党支部+公司+基地+专业合作社+农户”形式，组建产业化联合体，“三位一体”综合合作模式
//4.提供资金支持：成立资金互助社，设立村级互助基金，“基金担保+村集体审核+银行授信”合作方式，多渠道融资服务


